1. Field of the Invention
The present invention relates to updating of files on a file system. More particularly, the present invention relates to distribution of updated files of a file group, via a file system, to users of the file group in a manner that ensures that the updating does not interfere with access by users of prior versions of the files of a preexisting file group. For example, the present invention encompasses providing software updates to users in a manner that avoids any conflict between the software updates and prior software versions.
2. Description of the Related Art
The availability of files to end users in a network encounters increasing complexity when different versions of the files are created. Unlike the relatively simple case of providing users with unique files having distinct names, the presence of different versions introduces difficulties in ensuring that the appropriate version is delivered to the user. File systems, referred to as “versioning file systems”, have been developed that track different versions of a given file. As described below, however, such versioning file systems are insufficient for more complex file interactions, namely managing distribution of related files within a file group, where coordination is required between the multiple files within the file group to avoid inconsistencies.
One example of managing related files within a file group involves dissemination of executable software to end users. Traditional techniques for sending software to users can be categorized as one of three methods: (1) install on demand, (2) executing software from a network mapped drive, and (3) pushed package install. The technique of install on demand involves copying an executable software file from a server to the user's computer each time the user wishes to execute the program, for example in the form of a web based ActiveX control. The install on demand technique also has been referred to as “install from the Web”, or “just in time installation”, etc.
A fundamental aspect of the install on demand technique is that the executable software file always is downloaded from a remote site and executed automatically on the user's computer; if the executable software instance is terminated, the operating system of the user's computer is unable to restart the previously downloaded software file, hence a second instance of the executable software can only be initiated by repeating the process of downloading the executable software from the remote site. Hence, the install on demand technique has the advantage that software can be updated at any time after the user has received the software, without affecting existing software execution. In addition, the software update can be completed simply by replacing the original software, stored on the server, with a new version. However, an inherent problem with the install on demand technique is that the necessity for downloading the executable software file for each instantiation of the software requires that the size of the executable software file be limited to a relatively small size to prevent excessive delays that would otherwise be encountered in downloading large executable files.
Use of a network mapped drive to provide software to users involves storing the executable software on a network mapped drive that is available to the users of a network, for example a shared file server in a local area network. Each time a client computer attempts to execute the software, the client computer executes the executable software that is stored on the network mapped drive, resulting in an open connection between the client computer and the server that persists for the duration of the instance of the executable software (i.e., the application instance). Use of the network mapped drive has the advantage of being stored statically on the shared file server, eliminating concerns that the executable software needs to be limited to a small size for optimized downloading; rather, the size of the executable software is not limited as in the case of the install on demand technique. In addition, the executable software can be updated by replacing the single copy of the prior executable software with the newer version, but only if no users are currently executing the software stored on the network mapped drive.
In particular, if any user is accessing the executable software on the network mapped drive, a lock is imposed on the file during software execution to ensure that the file is not deleted or modified during the existence of the open connection between the client computer and the server. Hence, network administrators need to notify all users to terminate execution of the software before the updated software can be added to the network, else a system crash will be encountered. In addition, any loss of connectivity between the client computer and the server that stores the executable software will result in a premature termination of the open connection, causing a crash of the executable instance of the software. In addition, if an optional component of the executable software file (e.g., a dynamically linked library (DLL)) is updated, the executable software file still may crash upon execution due to an incompatibility between the existing executable software file and the updated component.
The pushed package install technique involves delivering the executable software file to the user computer via some installation mechanism (e.g., accessing a download resource by selecting a hyperlink on a website or in an e-mail, compact disc, downloading installation software, etc.), causing the installation (“pulling”) of the executable software file onto the user computer. Hence, the installed software does not have any size limitation as encountered in the install on demand technique, and does not require connectivity with a server as required using the network mapped drive technique. In addition, the executable software file may be configured for checking for updates upon startup, which may result in an updated file being downloaded and installed onto the user computer. Hence, each user computer is responsible for updating its version of the executable software. Consequently, a fundamental problem with the pushed package install technique is that a software developer is unable to ensure that all users have the most up-to-date version of the software.
Hence, the distribution of software according to the above-identified techniques has numerous tradeoffs that limit the availability to provide the most up-to-date software to all users, regardless of the size of the software files. In addition, the existing versioning file systems are not designed to handle multiple related files; hence, inconsistencies may arise if different versions of a file link to a referenced file having a different version, for example in the case of linked spreadsheets or the like.